package main

import "fmt"

//常量 程序运行中不变的数叫做常量    通常定义全局

const pi = 3.1415926

// 批量声明常量
const (
	statusOk = 200
	notfound = 404
)

const (
	n1 = 100
	n2 // 如果批量声明常量时,如果某一行声明没有赋值 默认和上一行一至
	n3
)

const (
	b1 = iota //0
	b2 = iota //1
	_  = iota //2
	b3 = iota //3
)

//插队
const (
	c1 = iota //0
	c2 = 100  // 100   常量没新增一行  iota 就加一
	c3 = iota //2
)

//多个const声明在一行
const (
	d1, d2 = iota + 1, iota + 2 //1      1
	d3, d4 = iota + 1, iota + 2 // 2     3
)

// 定义数量级
const (
	_  = iota //
	KB = 1 << (10 * iota)
	MB = 1 << (10 * iota)
	GB = 1 << (10 * iota)
	TB = 1 << (10 * iota)
	PB = 1 << (10 * iota)
)

// iota   只能在常量const中使用
/*
	iota 是 Go语言中的常量计数器  只能在常量中使用
	iota 在const关键字出现时,将被重置为0,const每增加一行常量声明将使iota计数一次(iota可以理解为const语句块中的行索引)。使用iota能简化定义,在定义枚举时
	很有用
*/

// iota   枚举
const (
	a1 = iota //0
	a2        //1
	a3        //2
)

var name = "dasd "
var name1 string
var (
	age int
)

func main() {
	// pi = 1654  //常量在程序运行期间不会进行改变
	fmt.Println(n1)
	fmt.Println(n2)
	fmt.Println(n3)

	fmt.Println(a1, a2, a3)
	fmt.Println(b1, b2, b3)
	fmt.Println(c1, c2, c3)
	fmt.Println(d1, d2, d3, d4)
	fmt.Println(KB, MB, GB, TB, PB)
}
